iOS SDK接入

1. 下载SDK

官网SDK&Demo下载进行解压,解压后包含:

  • SDK&Demo下载

  • IDaaSDoraemonSDK.framework(安全认证静态库)

  • 具体认证服务SDK,包括:手机号认证,生物识别(IFAA)

2. 前期准备

2.1 准备工作

请确保已在安全认证控制台创建应用,并开启生物识别(IFAA)服务。

1

2.2 接入流程

image.png

2.3 运行demo工程

解压后包含DoraemonDemo工程, 需要将bundleID 、应用密钥修改为你的应用密钥。

2.4 搭建开发环境

运行环境:iOS 11.0+平台上。

支持语言:Object-C、Swift

2.4.1 添加主库

Targets->General->Linked Frameworks and Libraries 中添加主库

IDaaSDoraemonSDK.framework

如果应用授权了认证方式,添加额外的认证方式主库:

首先 Targets->General->Linked Frameworks and Libraries 中添加主库

IFAAAuthenticator.framework
etasSdk.framework
APOpenSSL.framework
APSecCrypto.framework

然后 Targets->General->Linked Frameworks and Libraries 中添加系统库

Security.framework
AVFoundation.framework
LocalAuthentication.framework
Foundation.framework
libc++.tbd

最后 Targets->Build Phases->Copy Bundle Resources 中添加资源文件

etasSdk.bundle

说明

如果项⽬之前集成的有其他openssl,在发⽣冲突时可以删除APOpenSSL.framework保留其他的openssl;

如果项⽬之前有集成⽀付宝AlipaySDK.framework,会与APSecCrypto.framework产⽣冲突,需删除APSecCrypto.framework。

2.4.2 Target->BuildSettings设置

Xcode 中还需要进行设置,Targets->BuildSettings 中 , Other Linker Flags增加-ObjC,⼀定要添加此选项,注意是⼤写C,不是⼩写c,否则⼯程运⾏会crash!

1

3. IFAA认证SDK 方法说明

3.1 主类IDaaSDoraemonManager接⼝简介

3.1.1 获取认证实例(sharedInstance)

  /** 
  * 函数名:sharedInstance
  * @param ⽆
  * 返回:获取该类的单例实例对象
  */  
+ (instancetype _Nonnull )sharedInstance;  

3.1.2 获取sdk版本号(getVersion)

/** 
* 函数名:getVersion
* @param ⽆
* 返回:字符串,sdk版本号
*/  
- (NSString *_Nonnull)getVersion;

3.1.3 初始化应用支持的认证服务-(SDKInitWithApplicationExternalId)

/**
 *  安全认证服务初始化
 *  @param applicationExternalId  应用外部ID
 *  @param appKey 应用密钥
 *  @param complete 结果回调到主线程
 */
-(void)SDKInitWithApplicationExternalId:(NSString *)applicationExternalId appKey:(NSString *)appKey complete:(void (^)(NSDictionary *resultDic))complete;

3.1.4 获取access_token

此接口需要开发者调用服务端SDK获取应用授权Token接口,回传给移动端SDK。

/** 获取token */
@property (nonatomic,copy) NSDictionary *(^fetchAccessTokenCallBack)(NSString *mobileExtendParamsJson, NSString *mobileExtendParamsJsonSign);

3.2 SDK返回码

枚举值

业务意义

IFAA_SUCCESS

0

成功

IFAA_STATUS_SUPPORT_OTHERS

1

⽀持除指纹/⼈脸以外的认证类型,如pin/⼿势等

IFAA_STATUS_NOT_ENROLLED

4

终端没有录⼊指纹/⼈脸(此时可以引导⽤户去录⼊指纹/⼈脸再做操作)

IFAA_STATUS_PASSCODE_NOT_SET

7

尚未设置屏幕锁密码 (IFAA 需要设置屏幕锁后才能进⾏,否则不安全,此处可引导⽤户去设置屏幕锁)

IFAA_CLIENT_ERROR

8

本地执⾏异常

IFAA_SERVER_ERROR

9

服务器错误

IFAA_POLICY_REJECTED

12

被⻛险策略拒绝时

IFAA_USER_REJECTED

13

⽤户被禁⽤时

IFAA_APPID_NOT_FOUND

14

应⽤⽩名单中未设置应⽤标识

IFAA_DEVICE_MODEL_NOT_FOUND

15

设备型号不存在

IFAA_SIGNATURE_FAIL

16

未获取到签名数据

IFAA_STATUS_DELETED

17

本地指纹已经注册,但是注册的指纹模组数据已经被删除(Android独有)

IFAA_CLIENT_ERROR_MULTI_FP_NOT_SUPP ORT

18

此⼿机不⽀持多指位(Android独有)

IFAA_STATUS_RESULT_CANCELED

19

⽤户取消

IFAA_STATUS_RESULT_TIMEOUT

20

超时(Android独有)

IFAA_STATUS_RESULT_AUTH_FAIL

21

验证失败,系统指纹不匹配

IFAA_STATUS_RESULT_SYSTEM_BLOCK

22

连续多次校验失败,指纹校验被暂时锁定(暂时Android独有)

IFAA_STATUS_RESULT_FALLBACK

23

点击了 FALLBACK 按钮

IFAA_STATUS_RESULT_TEE_ERROR

24

TEE 错误(Android独有)

IFAA_STATUS_RESULT_SYSTEM_ERROR

25

⼿机系统问题,请升级系统版本(Android独有)

IFAA PERMISSION DENIED

26

-Android:当前设备未获取相机权限

IFAA_AUTHENTICATOR_DISABLE

27

-IOS:当前应⽤未获取FaceID权限

IFAA_AUTHENTICATOR_NOT_FOUND

28

认证器被禁⽤

IFAA_DEVICE_KEY_NOT_FOUND

29

未找到相应的认证器

IFAA_PROTECT_PAYLOAD_NOT_MATCH

30

设备密钥被禁⽤

4. 认证示例

4.1 IFAA注册/认证

4.1.1 IFAA认证器-注册

 [[IDaaSDoraemonManager sharedInstance]authenticatorServiceWithAuthMethod:@"IFAA" action:DoraemonAuthTypeRegister userId:@"zhangsan"complete:^(NSDictionary *resultDic) {

        HKLog(@"IFAA认证器-注册结果 %@",resultDic);
 }];

4.1.2 IFAA认证器-认证

 [[IDaaSDoraemonManager sharedInstance]authenticatorServiceWithAuthMethod:@"IFAA" action:DoraemonAuthTypeAuth userId:@"zhangsan"complete:^(NSDictionary *resultDic) {

        NSLog(@"IFAA认证器-认证结果 %@",resultDic);
 }];

4.2 校验JwtToken

最后需要校验JwtToken来确保此次认证结果真实有效。